﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DTO;
using AutoMapper;
using System.Data;

namespace Data
{
  public  class ChiTietPhieuNhapRepository
    {
      private static ChiTietPhieuNhapDTO MapChiTietPhieuNhapEFToChiTietPhieuNhapDTO(CHITIETPHIEUNHAP chitietphieunhapEF)
      {
          Mapper.CreateMap<CHITIETPHIEUNHAP, ChiTietPhieuNhapDTO>();
         return Mapper.Map<CHITIETPHIEUNHAP, ChiTietPhieuNhapDTO>(chitietphieunhapEF);

      }
      private static CHITIETPHIEUNHAP MapChiTietPhieuNhapDTOToChiTietPhieuNhapEF(ChiTietPhieuNhapDTO chitietphieunhapDTO)
      {
          Mapper.CreateMap<ChiTietPhieuNhapDTO, CHITIETPHIEUNHAP>();
          return Mapper.Map<ChiTietPhieuNhapDTO, CHITIETPHIEUNHAP>(chitietphieunhapDTO);

      }
      public static List<ChiTietPhieuNhapDTO> GetChiTietPhieuNhapByMaPhieuNhap(int maphieunhap)
      {
          List<ChiTietPhieuNhapDTO> list = new List<ChiTietPhieuNhapDTO>();
          using (QuanLyNhaSachEntities context = new QuanLyNhaSachEntities())
          {
              try
              {
                  var query = from chitietphieunhap in context.CHITIETPHIEUNHAPList
                              where chitietphieunhap.MaPhieuNhap == maphieunhap
                              select chitietphieunhap;
                  foreach (var chitietphieunhapEF in query)
                  {
                      ChiTietPhieuNhapDTO chitietphieunhapDTO = MapChiTietPhieuNhapEFToChiTietPhieuNhapDTO(chitietphieunhapEF);
                      list.Add(chitietphieunhapDTO);
                  }
              }
              catch
              {

              }
          }
          return list;
      }
      public static bool Insert(ChiTietPhieuNhapDTO chitietphieunhapDTO)
      {
          bool kq = true;
          using (QuanLyNhaSachEntities context = new QuanLyNhaSachEntities())
          {
              try
              {
                  CHITIETPHIEUNHAP chitietphieunhapEF =new CHITIETPHIEUNHAP();
                    chitietphieunhapEF  = MapChiTietPhieuNhapDTOToChiTietPhieuNhapEF(chitietphieunhapDTO);
                    context.AddToCHITIETPHIEUNHAPList(chitietphieunhapEF);
                  context.SaveChanges();
              }
              catch
              {
                  kq = false;
              }
          }
          return kq;
      }
      public static bool Update(ChiTietPhieuNhapDTO chitietphieunhapDTO)
      {
          bool kq = true;
          using (QuanLyNhaSachEntities context = new QuanLyNhaSachEntities())
          {
              try
              {

                  EntityKey key = context.CreateEntityKey("CHITIETPHIEUNHAPList", new CHITIETPHIEUNHAP { MaChiTietPhieuNhap = chitietphieunhapDTO.MaChiTietPhieuNhap });

                  CHITIETPHIEUNHAP origchitietphieunhap = context.GetObjectByKey(key) as CHITIETPHIEUNHAP;
                  context.Detach(origchitietphieunhap);
                  context.Attach(origchitietphieunhap);
                  CHITIETPHIEUNHAP updatechitietphieunhap = new CHITIETPHIEUNHAP();
                  updatechitietphieunhap = MapChiTietPhieuNhapDTOToChiTietPhieuNhapEF(chitietphieunhapDTO);
                  context.ApplyCurrentValues<CHITIETPHIEUNHAP>("CHITIETPHIEUNHAPList", updatechitietphieunhap);
                  context.SaveChanges();
              }
              catch
              {
                  kq = false;
              }
          }
          return kq;
      }
    }
}
